GtkRequisition minimum_req, natural_req;
GtkWidget *child;
gint min_child_size, nat_child_size;
+ GtkBorder border = { 0 };
scrollbar_spacing = _gtk_scrolled_window_get_scrollbar_spacing (scrolled_window);
&vscrollbar_requisition, NULL);
child = gtk_bin_get_child (bin);
+
+ if (GTK_IS_SCROLLABLE (child))
+ gtk_scrollable_get_border (GTK_SCROLLABLE (child), &border);
+
if (child && gtk_widget_get_visible (child))
{
if (orientation == GTK_ORIENTATION_HORIZONTAL)
}
}
- if (policy_may_be_visible (priv->hscrollbar_policy) && !priv->use_indicators)
+ if (policy_may_be_visible (priv->hscrollbar_policy))
{
- minimum_req.width = MAX (minimum_req.width, hscrollbar_requisition.width);
- natural_req.width = MAX (natural_req.width, hscrollbar_requisition.width);
- if (!extra_height || priv->hscrollbar_policy == GTK_POLICY_ALWAYS)
+ minimum_req.width = MAX (minimum_req.width, hscrollbar_requisition.width + border.left + border.right);
+ natural_req.width = MAX (natural_req.width, hscrollbar_requisition.width + border.left + border.right);
+ if (!priv->use_indicators &&
+ (!extra_height || priv->hscrollbar_policy == GTK_POLICY_ALWAYS))
extra_height = scrollbar_spacing + hscrollbar_requisition.height;
}
- if (policy_may_be_visible (priv->vscrollbar_policy) && !priv->use_indicators)
+ if (policy_may_be_visible (priv->vscrollbar_policy))
{
- minimum_req.height = MAX (minimum_req.height, vscrollbar_requisition.height);
- natural_req.height = MAX (natural_req.height, vscrollbar_requisition.height);
- if (!extra_width || priv->vscrollbar_policy == GTK_POLICY_ALWAYS)
+ minimum_req.height = MAX (minimum_req.height, vscrollbar_requisition.height + border.top + border.bottom);
+ natural_req.height = MAX (natural_req.height, vscrollbar_requisition.height + border.top + border.bottom);
+ if (!priv->use_indicators &&
+ (!extra_width || priv->vscrollbar_policy == GTK_POLICY_ALWAYS))
extra_width = scrollbar_spacing + vscrollbar_requisition.width;
}
GtkBorder border = { 0 };
gtk_scrolled_window_relative_allocation (widget, rect);
-
child = gtk_bin_get_child (GTK_BIN (widget));
if (GTK_IS_SCROLLABLE (child) &&
gtk_scrollable_get_border (GTK_SCROLLABLE (child), &border))
gtk_widget_get_preferred_height (priv->hscrollbar, &sb_height, NULL);
gtk_widget_get_preferred_width (priv->vscrollbar, &sb_width, NULL);
- gtk_css_gadget_get_content_allocation (priv->gadget, &content_allocation,
- NULL);
+ gtk_css_gadget_get_content_allocation (priv->gadget, &content_allocation, NULL);
allocation->x = content_allocation.x;
allocation->y = content_allocation.y;